← Back shared

본문 바로가기

블로그

카테고리 이동

지금까지는 파이썬 으로 음성 감정 분석 모델(SER, Sound Emotion Analysis) 을 구현하고 검증까지 해보았다면

이제는 실전 영상으로 써먹을만한 녀석인지를 확인해보면 된다.

다만 음성 감정 분석 모델 의 input은 음성 혹은 소리 이기 때문에

영상에서 소리를 추출 하고 모델에 input으로 넣어주는 전처리 작업은 필요하다.

아마 옛날 같았으면 인터넷에서 영상 편집 프로그램을 다운받아서, input file을 만들었겠지만

나름 그래도 코딩한다는 사람인데 가오가 있지!! 그래도 파이썬으로 음성 추출 정도는 해봐야되지 않겠는가!

그래서 오늘 게시물에서는 파이썬 으로

① 폴더 내 파일 이름을 리스트 로 받아오는 방법

영상에서 음성 혹은 소리를 추출 하는 방법

소리파일의 확장자를 바꾸는 방법

음성 혹은 소리를 특정 길이로 자르는 방법

을 알아보자 ㅎㅎ

폴더 내 파일 이름을 리스트로 받아오기: os.listdir()

만약 여러 개의 파일을 순차적으로 코드에 넣어서 처리하고 싶다면 파일 이름들을 리스트화 해서 for 구문에 넣으면 그만이다.

어떤 폴더 혹은 경로에 있는 파일 이름들을 리스트로 받아오고 싶다면

import os

"리스트 이름" = os.listdir ("경로")

로 쉽게 받아올 수 있다.

파이썬으로 영상에서 음성 혹은 소리를 추출하기: write_audiofile

파이썬으로 영상 편집 혹은 가공 을 하려면 moviepy 라이브러리 가 매우 유용할 것이다.

영상에서 음성, 소리 추출 외 기능이 참 많다.

일단 먼저 로컬에서 moviepy 라이브러리 를 활용하려면, !pip install moviepy 로 라이브러리 설치부터 해야할 필요가 있다.

(구글 코랩에서는 설치가 되어있으니 오케이)

이후에는

import moviepy.editor as mp 로 moviepy 라이브러리 를 불러온 후

mp.VideoFileclip ("추출할영상").audio.write_audiofile ("소리파일 이름")

으로 음성을 추출할 수 있다.

파이썬으로 소리파일 확장자 변경하기: pydub.AudioSegment

파이썬으로 소리파일 확장자 변경하기 는 손바닥 뒤집기 만큼 쉽다.

여기서는 파이썬으로 mp3파일을 wav파일로 바꿔보자.

먼저 pydub 에서 AudioSegment라는 라이브러리 를 불러온다.

(만약 로컬이라면 pydub부터 설치할 필요가 있다.!pip install pydub)

이후

"아무이름" = AudioSegment.from_mp3 ("바꿀파일")

"아무이름".export("wav파일이름", format = "wav")

만 거치면 끝

파이썬으로 소리파일을 특정 길이만큼 자르기

역시 여기서도 pydub 의 AudioSegment 를 활용한다.

여기에 소숫점 처리와 같은 계산을 위해 math 라이브러리 까지 불러온다.

import math

from pydub import AudioSegment

"아무이름" = AudioSegment.from_mp3 ("불러올파일")

"아무이름2" = 자를 소리의 길이 (3초라면 3000, 2초라면 2000을 기입)

for i in range(int(math.floor(len("아무이름")/자를 소리의 길이))):

"아무이름3" = "아무이름" [i*아무이름2:(i+1)*아무이름]

"아무이름3".export("출력될 파일의 이름", format = "wav") ← 만약 wav 파일로 출력하려고 한다면

위의 그림은 소리파일들을 길이 3초마다 자르기 위해 만든 코드였다.

이렇게 2022년 1분기를 불태웠던 연구개발특구진흥재단의 제3회 AI-SPARK 인공지능 경진대회에서 최우수상을 수상하면서

결과물을 만들기 위해 내가 공부하고 깨우쳤던 내용을 정리해보았다.

이렇게 정리를 안 하니 계속 까먹는다. 나중에 다시 되돌아보기 위해서라도 계속 기록을 남겨봐야겠다.